package com.dataextend.mapper.cluster;

import com.dataextend.entity.UserProfileTag;
import org.apache.ibatis.annotations.Param;
import com.alibaba.fastjson.JSONObject;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public interface UserProfileMapper {

    /**
     *  获取行为事件元数据
     */
    List<JSONObject> getEventModel();

    /**
     *  获取标签元数据
     */
    List<JSONObject> getTagDefined();

    /**
     *  新增标签
     */
    void addUserTag(UserProfileTag userProfileTag);


    /**
     *  修改用户标签
     */
    void updateUserTag(UserProfileTag userProfileTag);


    /**
     *  删除用户标签
     */
    void deleteUserTag(@Param("tag_id") String tag_id);


    /**
     *  查询用户标签列表
     */
    List<JSONObject> listUserTag(@Param("pageno") Integer pageno, @Param("pagesize") Integer pagesize);

    /**
     * 查询用户标签总数
     */
    Integer countUserTag();


    /**
     *  根据标签名称进行查询
     */
    List<JSONObject> searchUserTag(@Param("tagName") String tagName);


    /**
     *  根据标签ID进行查询
     */
    List<JSONObject> searchTagId(@Param("tagId") String tagId);


    /**
     *  标签数量校验
     */
    List<JSONObject> checkTagNum(@Param("tagId") String tagId, @Param("startDate") String startDate, @Param("endDate") String endDate);


    /**
     *  同二级大类下各标签所占比例
     */
    List<JSONObject> checkTagRatio(@Param("tagId") String tagId, @Param("dataDate") String dataDate);


    /**
     *  首页查询用户标签视图
     */
    List<JSONObject> userTagView();


//    /**
//     *  用户标签下拉菜单,根据用户筛选的1 2 3层级关系返回相应的内容供前端筛选
//     */
//    List<JSONObject> dropDownList(@Param("level1") String level1,@Param("level2") String level2,@Param("tagname") String tagname);


    /**
     *  用户画像 —— 人群多维分析-下拉菜单 筛选分析维度
     */
    List<JSONObject> usergroupAnalysisList();

    /**
     *  用户画像 —— 人群多维分析- 根据筛选分析维度查找对应的标签
     */
    List<String> usergroupAnalysisTags(String levelid);



    /**
     *  用户画像 —— 人群多维分析 —— 填写标签权重值
     */
    List<JSONObject> usergroupAnalysisTheme(String level_2_name);


    /**
     *  用户画像 —— 人群多维分析 —— 填写标签权重值
     */
    List<JSONObject> usergroupAnalysisTag(String level_2_name);


    /**
     *  用户画像 —— 人群多维分析-选择人群
     */
    List<JSONObject> distinctGroupname();


    /**
     *  用户画像 —— 人群多维分析-根据人群id查询人群规则
     */
    String usergroupRule(String groupId);


    /**
     *  用户画像 —— 人群多维分析-根据分析维度查询包含的标签
     */
    List<String> analysisTags(String dimension);


    /** 用户属性满足条件筛选  */
    List<JSONObject> propertyFilterList();


    /** 人群分析下拉菜单  */
    List<JSONObject> analysisList();


    /** 人群分析维度列表  */
    List<String> analysisDimensionList();


    /** 人群分析维度新增  */
    void analysisDimensionAdd(String dimension);

    /** 人群分析维度删除  */
    void analysisDimensionDelete(String dimension);


    String maxGroupId();

}
